package org.jdpf.gui.rcp.neteditor.core.blocks;

import java.util.List;
import java.util.Properties;

import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.jdpf.gui.rcp.neteditor.core.elements.GraphicWire;
import org.jdpf.gui.rcp.neteditor.core.elements.IGraphicNode;
import org.jdpf.gui.rcp.neteditor.core.elements.IValidable;
import org.osgi.framework.Bundle;

public interface IGraphicBlock extends IGraphicNode {
    public List<Point> getInputPositionPointList();
    public List<Point> getOutputPositionPointList();
    public Point getInputPositionPoint(int order);
    public Point getOutputPositionPoint(int order);
    public int isInputSelected(Point point);
    public int isOutputSelected(Point point);
    public GraphicWire getInputWire(int order);
    public GraphicWire getOutputWire(int order);
    public List<GraphicWire> getInputWireList();
    public List<GraphicWire> getOutputWireList();
    public void addInputWire(GraphicWire wire, int order);
    public void addOutputWire(GraphicWire wire, int order);
    public void drawInputConnectors(GC gc);
    public void drawOutputConnectors(GC gc);
    public void drawBundleName(GC gc);
    public void setTransitionId(String id);
    public String getTransitionId();
    public void setTransitionName(String name);
    public String getTransitionName();
    public void setParameter(String name, String value);
    public void removeParameter(String name);
    public void setParameters(Properties params);
    public String getParameter(String name);
    public Properties getParameters();
    public Bundle getBundle();
    public String getBundleSymbolicName();
    public String getBundleName();
    public String getCategory();
    public void addInspector();
    public GInspector getInspector();
    public boolean isInspectioned();
	public void removeInspector();
	public IValidable getGraphicNetValidable();
}
